package cn.iocoder.yudao.module.lfd.dal.dataobject.schedule;

import lombok.*;

import java.time.LocalDate;
import java.time.LocalTime;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import org.apache.ibatis.type.JdbcType;

/**
 * 排班 DO
 *
 * @author 陈星星
 */
@TableName("lfd_schedule")
@KeySequence("lfd_schedule_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ScheduleDO {

    /**
     * id
     */
    @TableId
    private Long id;
    /**
     * 店铺
     */
    private Long shopId;
    /**
     * 理发师id
     */
    private Long barberId;
    /**
     * 星期
     */
    private String week;
    /**
     * 状态
     */
    private String status;
    /**
     * 开始上班
     */
    private LocalTime startWork;
    /**
     * 下班时间
     */
    private LocalTime endWork;
    /**
     * 加班开始
     */
    private LocalTime startOvertime;
    /**
     * 结束加班
     */
    private LocalTime endOvertime;
    /**
     * 总加班时长
     */
    private Integer totalOvertime;
    /**
     * 排班日
     */
    private LocalDate scheduleDate;

    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    /**
     * 最后更新时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    /**
     * 创建者，目前使用 SysUser 的 id 编号
     *
     * 使用 String 类型的原因是，未来可能会存在非数值的情况，留好拓展性。
     */
    @TableField(fill = FieldFill.INSERT, jdbcType = JdbcType.VARCHAR)
    private String creator;
    /**
     * 更新者，目前使用 SysUser 的 id 编号
     *
     * 使用 String 类型的原因是，未来可能会存在非数值的情况，留好拓展性。
     */
    @TableField(fill = FieldFill.INSERT_UPDATE, jdbcType = JdbcType.VARCHAR)
    private String updater;

}
